﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace XDL.Framework.OpenSteer
{
    /// <summary>
    /// Generic 2D map interface.
    /// </summary>
    public interface IMap
    {
        int Width
        {
            get;
        }
        int Height
        {
            get;
        }
        int GetCost(Vector2i pos);
        bool IsWalkable(Vector2i pos);
        bool IsWalkable(int x, int y);
        float GetHeight(Vector2i pos);
        float GetHeight(int x, int y);

        /// <summary>
        /// Tag the current position.
        /// </summary>
        /// <param name="pos">Position.</param>
        /// <param name="tag">Tag value</param>
        void Tag(Vector2i pos, int tag, int tagCategory);
        /// <summary>
        /// Returns whether the current position has already been tagged (e.g. visited)
        /// </summary>
        /// <param name="pos"></param>
        /// <param name="tag"></param>
        /// <returns></returns>
        bool IsTagged(Vector2i pos, int tag, int tagCategory);
    }
}
